第三方信用卡支付总结 - Square篇

RN端

依赖库

大致流程

  • 单次支付
    • 情景:用户直接填写信用卡相关信息,完成支付,服务器端不保存用户相关信息
    • 实现:RN端调用SDK的 startCardEntryFlow 函数,APP会自动弹出官方实现好的页面让用户进行信用卡信息填写,填写成功后会调用成功的回调函数,并传入生成的nonce和信用卡信息,并进入loading状态。在回调函数中,将获得的nonce发送给后端,让后端调用对应的SDK完成支付,并返回结果。获得服务器返回结果后,RN端调用SDK的 completeCardEntry 函数通知SDK停止loading UI,并关闭页面,完成支付流程
  • 保存成卡片
    • 情景:用户只填写一次信用卡信息,信息以卡片的形式保存在个人资料中。支付时,用户选择想要使用的卡片完成支付。
    • 实现:RN端调用SDK的 startCardEntryFlow 函数,APP会自动弹出官方实现好的页面让用户进行信用卡信息填写,填写成功后会调用成功的回调函数,并传入生成的nonce和信用卡信息,并进入loading状态。在回调函数中,将获得的nonce发送给后端,后端拿到nonce后,调用后端SDK中生成卡片的API,生成代表卡片的token,然后将该卡片保存到服务器端的用户信息中,每个token可以唯一的代表一张卡片,可以多次使用,使用方式完全和单次支付一样,只是使用不同的token而已。

相关术语

  • nonce

    • 用户填完信通卡信息后生成的token

    • 一次性使用

    • 以固定的前缀“corn:”开头

    • nonce可以用来独立的完成一次支付,也可以用来生成一张卡片,供多次使用
  • card on file

    • 可多次使用的token

    • 通过API,将一个nonce绑定到一个square的customer上后,产生的token

    • 能够唯一代表一张信用卡,进行消费

    • 以固定的前缀"ccof:"开头

  • customer

    • square自己的用户系统

    • 能够简单的通过一个用户名便可创建

    • 没有太大作用,主要是为了建立和card on file的一个一对多的关系

    • 一般在项目自己的用户系统创建用户时同步调用square的API创建一个customer,与项目自己的用户系统进行一对一绑定

注意点

  • 关于沙盒模式
    • 沙盒模式是square提供给开发的测试环境,可以测试完整的支付流程但是不会真正扣费
    • 沙盒模式的app key以及secret key等等全都是独立的,需要在后台单独创建
    • 沙盒模式不是随便的信用卡信息都能用来创建,需要使用官方提供的测试卡信息
      • 卡号:4111 1111 1111 1111
      • 时效:12/21
      • cvv:111
      • 邮编:11111
  • 遇到问题时,可以使用square后台的API在线工具查看是不是提供的信息有错,链接
  • 关于安装
    • 请一定要确认与该安装教程相比,没有遗漏的步骤,链接
    • 安装后,一定要测试release模式打包,因为很容易出现debug模式一切正常,release模式无法打包的情况。出现该情况,请检查该文档链接
    • 尤其注意,由于RN60版本后,内核以及内置库出现了较大变化,很容易出现奇怪的bug
    • 额外依赖的 SquareInAppPaymentsSDK.framework 文件有时候会出现签名检查错误的问题,不知道原因,不过可以尝试 xcode 中取消对该文件的签名检查。
    • 有时候安装时操作失误,可能出现 cocoapods 中安装了同时又被手动link了一遍的情况,这时候可能 xcode 的 Link Binary With Libraries 中和 Copy Bundle Resources 中同时出现 RNSquareInAppPayments-Resources.bundle 文件,这是需要去掉其中一个,避免冲突
  • 关于用户系统
    • 服务器自己的用户系统,需要在创建用户时,利用用户填写的资料,调用SDK同步创建一个 square 的 customer,并将对应生成的ID保存到用户信息中,之后创建卡片时,会需要将创建的卡片绑定到对应的square customer 上才能成功生成卡片。

参考

Web端

暂略

后端

暂略

results matching ""

    No results matching ""